package j2024.j202410;
class TreeNode {
    int val;
    TreeNode left;
    TreeNode right;
    TreeNode() {}
    TreeNode(int val) { this.val = val; }
    TreeNode(int val, TreeNode left, TreeNode right) {
        this.val = val;
        this.left = left;
        this.right = right;
    }
}
public class j1024 {
    /**
     * 104. 二叉树的最大深度
     * 给定一个二叉树 root ，返回其最大深度。
     *
     * 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数
     * @param root
     * @return
     */
    public int maxDepth(TreeNode root) {
        if(root==null){
            return 0;
        }
        int left = maxDepth(root.left);
        int right = maxDepth(root.right);
        return Math.max(left,right)+1;
    }

    /**
     * 101. 对称二叉树
     * 给你一个二叉树的根节点 root ， 检查它是否轴对称。
     * @param root
     * @return
     */
    public boolean isSymmetric(TreeNode root) {
        if(root==null){
            return true;
        }
        return isSymmetricLandR(root.left,root.right);
    }
    public boolean isSymmetricLandR(TreeNode rootL,TreeNode rootR){
        if(rootL==null && rootR==null){
            return true;
        }
        if((rootL==null && rootR!=null) || (rootL!=null && rootR==null)){
            return false;
        }
        if(rootL.val!=rootR.val){
            return false;
        }
        return isSymmetricLandR(rootL.left,rootR.right) && isSymmetricLandR(rootL.right,rootR.left);
    }
}
